﻿using System.Collections.Generic;

namespace com.binance.client.model.enums
{
	 


	/// <summary>
	/// withdraw, deposit.
	/// </summary>
	public sealed class DepositState
	{

	  public static readonly DepositState UNKNOWN = new DepositState("UNKNOWN", InnerEnum.UNKNOWN, "unknown");
	  public static readonly DepositState CONFIRMING = new DepositState("CONFIRMING", InnerEnum.CONFIRMING, "confirming");
	  public static readonly DepositState SAFE = new DepositState("SAFE", InnerEnum.SAFE, "safe");
	  public static readonly DepositState CONFIRMED = new DepositState("CONFIRMED", InnerEnum.CONFIRMED, "confirmed");
	  public static readonly DepositState ORPHAN = new DepositState("ORPHAN", InnerEnum.ORPHAN, "orphan");

	  private static readonly IList<DepositState> valueList = new List<DepositState>();

	  static DepositState()
	  {
		  valueList.Add(UNKNOWN);
		  valueList.Add(CONFIRMING);
		  valueList.Add(SAFE);
		  valueList.Add(CONFIRMED);
		  valueList.Add(ORPHAN);
	  }

	  public enum InnerEnum
	  {
		  UNKNOWN,
		  CONFIRMING,
		  SAFE,
		  CONFIRMED,
		  ORPHAN
	  }

	  public readonly InnerEnum innerEnumValue;
	  private readonly string nameValue;
	  private readonly int ordinalValue;
	  private static int nextOrdinal = 0;


	  private readonly string code;

	  internal DepositState(string name, InnerEnum innerEnum, string code)
	  {
		this.code = code;

		  nameValue = name;
		  ordinalValue = nextOrdinal++;
		  innerEnumValue = innerEnum;
	  }

	  public override string ToString()
	  {
		return code;
	  }

//JAVA TO C# CONVERTER NOTE: Fields cannot have the same name as methods:EnumLookup


		public static IList<DepositState> values()
		{
			return valueList;
		}

		public int ordinal()
		{
			return ordinalValue;
		}

		public static DepositState valueOf(string name)
		{
			foreach (DepositState enumInstance in DepositState.valueList)
			{
				if (enumInstance.nameValue == name)
				{
					return enumInstance;
				}
			}
			throw new System.ArgumentException(name);
		}
	}

}